﻿using System;

namespace 依赖倒转原则
{
    class Program
    {
        static void Main(string[] args)
        {





            /*
             * 高内聚，低耦合
             * 依赖倒转原则：
             * 抽象不应该依赖细节，细节应该依赖抽象
             * 高层模块不应该依赖底层模块，两个都应该依赖抽象
             * 通俗地来说就是 依赖倒转原则就类似于螺母和螺丝，只要他们的规格相同，就能组合使用。
             * 
             * 里氏代换原则：
             * 一个软件实体使用的是一个父类的话，那么一定适用他的子类，而且他察觉不出子类对象和父类对象的差别，也就是说在程序
             * 设计种，所有的父类都可以用他的子类去替代。
             * 通俗的来说，他们之间的关系类似于类之间的继承关系，子类继承父类，那么子类有拥有父类所有的实现，
             * 里氏代换原则是 通过继承去复用父类的所有行为属性。，这样就可以在不修改父类的情况下对子类进行修改
             * 从而达到程序设计所追求的 易扩展，易维护，灵活，可复用。
             * 
             * 
             * 依赖倒转是面向对象设计的标志，如果编写时考虑的都是如何针对抽象编程而不是针对细节编程，
             * 即程序中所有的依赖关系都终止于抽象类或者接口
             * 那就是面向对象的设计，反之就是过程化的设计了。
             * 
             * 小B 负责的产线最近出问题了，用于调动产线速率的调速器换了，但市面上又找不到同类型的调速器，后来小B 
             * 打电话找到生产调速器的厂家得知该类型的调速器已经停产了，并向小B 推荐了他们公司最新研发的调速器，
             * 但是有一个很大的问题呀，新旧调速其的尺寸不一样，于是 小B 将刚买来的调速器进行了一次改造，让他能在原调试器的小屋里快乐地工作...
             * 这时小B 就想了，怎么才能避免这样地问题呢？按照原调速器的各项参数去购买似乎是一个很不错的选择.....
             * 
             * 很敷衍地写个小故事...
             * 
             * 
             */
        }
    }
}
